package com.ljy.my_study.lintcode.合并两个排序链表;

import com.ljy.my_study.util.ListNodeUtil;
import com.ljy.my_study.util.ListNodeUtil.ListNode;

/** 
* @author James
* @date 2018年9月28日 
*/
public class TestMain {
//	描述
//	将两个排序链表合并为一个新的排序链表
//
//	您在真实的面试中是否遇到过这个题？  
//	样例
//	给出 1->3->8->11->15->null，2->null， 返回 1->2->3->8->11->15->null。
	public static void main(String[] args) {
		int[] nums1= {1,3,8,11,15};
		int[] nums2= {2,4,5,9,12};
		ListNode head1=ListNodeUtil.createListNode(nums1);
		ListNode head2=ListNodeUtil.createListNode(nums2);
		System.out.println(mergeTwoLists(head1,head2));
	}

	public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
		if(l1==null) {
			return l2;
		}else if(l2==null) {
			return l1;
		}
		ListNode head=null;
		ListNode nowNode=null;
		if(l1.val<l2.val) {
			head=nowNode=l1;
			l1=l1.next;
		}else {
			head=nowNode=l2;
			l2=l2.next;
		}
		while(true) {
			if(nowNode==null) {
				break;
			}
			if(l1!=null&&l2!=null) {
				if(l1.val<l2.val) {
					nowNode.next=l1;
					l1=l1.next;
				}else {
					nowNode.next=l2;
					l2=l2.next;
				}
			}else if(l1!=null) {
				nowNode.next=l1;
				l1=l1.next;
			}else if(l2!=null) {
				nowNode.next=l2;
				l2=l2.next;
			}
			nowNode=nowNode.next;
		}
		return head;
    }
}
